/// API 端点统一管理
/// 所有 API 路径都在这里定义，方便维护和修改
class ApiEndpoints {
  // ==================== 认证相关 ====================
  
  /// 用户登录
  static const String authLogin = '/auth/login';
  
  /// 用户注册
  static const String authRegister = '/auth/register';
  
  /// IM 用户登录（备用）
  static const String imAuthLogin = '/im/auth/login';
  
  // ==================== IM 消息相关 ====================
  
  /// 发送单聊消息
  static const String imMessagesSingle = '/im/messages/single';
  
  /// 获取单聊消息列表
  static const String imMessagesSingleList = '/im/messages/single';
  
  /// 标记单聊消息已读
  static String imMessagesSingleRead(String messageId) => '/im/messages/single/$messageId/read';
  
  /// 发送群聊消息
  static const String imMessagesGroup = '/im/messages/group';
  
  /// 获取群聊消息列表
  static String imMessagesGroupList(String groupId) => '/im/messages/group/$groupId';
  
  /// 标记群聊消息已读
  static String imMessagesGroupRead(String groupId, String messageId) => '/im/messages/group/$groupId/$messageId/read';
  
  // ==================== IM 好友相关 ====================
  
  /// 获取好友列表
  static const String imFriends = '/im/friends';
  
  /// 添加好友
  static const String imFriendsAdd = '/im/friends';
  
  /// 删除好友
  static String imFriendsDelete(String friendId) => '/im/friends/$friendId';
  
  /// 更新好友备注
  static String imFriendsRemark(String friendId) => '/im/friends/$friendId/remark';
  
  /// 拉黑好友
  static String imFriendsBlack(String friendId) => '/im/friends/$friendId/black';
  
  // ==================== IM 聊天会话相关 ====================
  
  /// 获取用户聊天列表
  static const String imChats = '/im/chats';
  
  /// 创建或获取聊天
  static const String imChatsCreate = '/im/chats';
  
  /// 获取未读消息统计
  static const String imChatsUnreadStats = '/im/chats/unread-stats';
  
  /// 更新已读序列号
  static String imChatsReadSequence(String chatId) => '/im/chats/$chatId/read-sequence';
  
  /// 更新聊天备注
  static String imChatsRemark(String chatId) => '/im/chats/$chatId/remark';
  
  /// 更新聊天设置
  static String imChatsUpdate(String chatId) => '/im/chats/$chatId';
  
  /// 删除聊天
  static String imChatsDelete(String chatId) => '/im/chats/$chatId';
  
  // ==================== IM 群组相关 ====================
  
  /// 获取用户群组列表
  static const String imGroups = '/im/groups';
  
  /// 创建群组
  static const String imGroupsCreate = '/im/groups';
  
  /// 获取群组信息
  static String imGroupsInfo(String groupId) => '/im/groups/$groupId';
  
  /// 获取群组成员列表
  static String imGroupsMembers(String groupId) => '/im/groups/$groupId/members';
  
  /// 添加群组成员
  static String imGroupsMemberAdd(String groupId, String memberId) => '/im/groups/$groupId/members/$memberId';
  
  /// 移除群组成员
  static String imGroupsMemberRemove(String groupId, String memberId) => '/im/groups/$groupId/members/$memberId';
  
  /// 更新群组成员角色
  static String imGroupsMemberRole(String groupId, String memberId) => '/im/groups/$groupId/members/$memberId/role';
  
  /// 更新群组成员别名
  static String imGroupsMemberAlias(String groupId, String memberId) => '/im/groups/$groupId/members/$memberId/alias';
  
  /// 解散群组
  static String imGroupsDissolve(String groupId) => '/im/groups/$groupId/dissolve';
  
  /// 删除群组
  static String imGroupsDelete(String groupId) => '/im/groups/$groupId/delete';
  
  /// 更新群组信息
  static String imGroupsUpdate(String groupId) => '/im/groups/$groupId';
  
  // ==================== 用户相关 ====================
  
  /// 获取当前用户信息
  static const String usersMe = '/users/me';
  
  /// 更新当前用户信息
  static const String usersMeUpdate = '/users/me';
  
  /// 获取用户信息
  static String usersInfo(String userId) => '/users/$userId';
  
  /// 检查用户名是否可用
  static String usersCheckName(String name) => '/users/check-name/$name';
  
  // ==================== 文件上传相关 ====================
  
  /// 上传文件
  static const String upload = '/upload';
  
  /// 获取文件（支持通配符路径）
  static String uploadFile(String path) => '/upload/$path';
  
  // ==================== WebRTC 相关 ====================
  
  /// 获取 WebRTC Token
  static const String webrtcToken = '/webrtc/token';
  
  /// 获取 WebRTC 发布 Token
  static const String webrtcPublish = '/webrtc/publish';
  
  /// 获取 WebRTC 播放 Token
  static const String webrtcPlay = '/webrtc/play';
  
  /// WebRTC 发布代理
  static const String webrtcRtcPublish = '/webrtc/rtc/v1/publish';
  
  /// WebRTC 播放代理
  static const String webrtcRtcPlay = '/webrtc/rtc/v1/play';
  
  // ==================== 辅助方法 ====================
  
  /// 检查是否是登录接口（用于判断是否需要 token）
  static bool isLoginEndpoint(String path) {
    return path.contains(authLogin) || path.contains(imAuthLogin);
  }
  
  /// 检查是否是文件上传路径
  static bool isUploadPath(String path) {
    return path.startsWith('/api/upload/') || 
           path.startsWith('/upload/') ||
           path.contains('/upload/');
  }
}

